import java.util.ArrayList;
import java.util.List;

/**
 * 1694. 重新格式化电话号码
 * https://leetcode-cn.com/problems/reformat-phone-number/
 */
public class Solutions_1694 {
    public static void main(String[] args) {
        String number1 = "1-23-45 6";  // output: "123-456"
        String number2 = "123 4-567";  // output: "123-45-67"
        String number3 = "123 4-5678";  // output: "123-456-78"
        String number4 = "12";  // output: "12"
        String number5 = "--17-5 229 35-39475 ";  // output: "175-229-353-94-75"

        List<String> inputs = new ArrayList<>();
        inputs.add(number1);
        inputs.add(number2);
        inputs.add(number3);
        inputs.add(number4);
        inputs.add(number5);

        for (String input : inputs) {
            String result = reformatNumber(input);
            System.out.println(result);
        }
    }

    /**
     * 解题思路：模拟实现
     */
    public static String reformatNumber(String number) {
        char[] nums = new char[number.length()];
        int len = 0;
        char[] arr = number.toCharArray();
        // 数字字符加入到 nums 数组中
        for (char c : arr) {
            if (c >= '0' && c <= '9') {
                nums[len] = c;
                len ++;
            }
        }
        int idx = 0;
        StringBuilder res = new StringBuilder();

        // 大于 4 位的数字，按 3 位一组进行处理
        while (len > 4) {
            res.append("-");
            String str = String.valueOf(nums, idx, 3);
            res.append(str);
            idx += 3;
            len -= 3;
        }
        // 剩余的 3 种情况：单独处理
        if (len == 4) {
            // 剩 4 个数字：-22-22
            res.append("-");
            String str = String.valueOf(nums, idx, 2);
            res.append(str);
            idx += 2;
            res.append("-");
            str = String.valueOf(nums, idx, 2);
            res.append(str);
        } else if (len == 3) {
            // 剩 3 个数字：-222
            res.append("-");
            String str = String.valueOf(nums, idx, 3);
            res.append(str);
        } else if (len == 2) {
            // 剩 2 个数字：-22
            res.append("-");
            String str = String.valueOf(nums, idx, 2);
            res.append(str);
        }
        res.deleteCharAt(0);
        return res.toString();
    }
}
